using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using NEX_Datos;
using System.Data;

namespace NEXServicio
{
    public class ServicioCategoria: ServicioPadre
    {
        #region Contantes

        public const String DataTableName = "Categoria";

        #endregion

        #region Metodos privados
        private static DataSet ListarPrivado(bool? activo, int? idCategoria, int? idCategoriaPadre)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "CategoriaTraer";
                SetearConNulo("p_idCategoria", cmd, MySqlDbType.Int32, idCategoria);
                SetearConNulo("p_idCategoriaPadre", cmd, MySqlDbType.Int32, idCategoriaPadre);
                SetearConNulo("p_Activo", cmd, MySqlDbType.Bit, activo);

                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                }
            }
            ds.Tables[0].TableName = ServicioCategoria.DataTableName;
            return ds;
        }
        #endregion

        #region Metodos Publicos
        public static DataSet Obtener(int idCategoria)
        {
            DataSet ds = new DataSet();
            ds.Locale = System.Globalization.CultureInfo.CurrentCulture;
            using (MySqlCommand cmd = UtilidadAD.CreateSqlCommand())
            {
                cmd.CommandText = "CategoriaTraer";
                SetearConNulo("p_idCategoria", cmd, MySqlDbType.Int32, idCategoria);
                SeteaValorNulo("p_idCategoriaPadre", cmd, MySqlDbType.Int32);
                SeteaValorNulo("p_Activo", cmd, MySqlDbType.Bit);

                using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                {
                    da.Fill(ds);
                }
            }
            ds.Tables[0].TableName = ServicioCategoria.DataTableName;

            return ds;
        }
        public static DataSet Listar()
        {
            return ServicioCategoria.ListarPrivado(null, null, null);
        }
        public static DataSet Listar(int idCategoriaPadre)
        {
            return ServicioCategoria.ListarPrivado(null, null, idCategoriaPadre);
        }
        //public static DataSet ListarHijos(int idCategoria)
        //{
        //    return ServicioCategoria.ListarPrivado(null, null, idCategoriaPadre);
        //}
        #endregion
    }
}
